package main

import (
	"bufio"
	"fmt"
	"net"
)

// TCP 服务端
// 1.监听接口
// 2.接收客户端请求连接
// 3.创建goroutine处理连接

func main() {
	fmt.Println("TCP server  start....")
	listen, err := net.Listen("tcp", "127.0.0.1:20000")
	if err != nil {
		fmt.Println("listen error:", err)
		return
	}

	for {
		conn, err := listen.Accept() //建立连接
		if err != nil {
			fmt.Println("建立连接失败:", err)
		}
		go process(conn) //协程启动处理连接
	}
}

// 处理函数
func process(conn net.Conn) {
	defer conn.Close() //关闭连接

	for {
		reader := bufio.NewReader(conn)
		var buf [128]byte
		n, err := reader.Read(buf[:]) //读取数据
		if err != nil {
			fmt.Println("读取客户端数据失败，错误取：", err)
			break //结束循环
		}

		recvStr := string(buf[:n])
		fmt.Println("收到客户端发送来的数据：", recvStr)
		conn.Write([]byte(recvStr)) //发送数据
	}

}
